Many modern computer systems are provided with a color display device to display in full color output information such as, for example, graphic images. In one example, the color display device comprises a color monitor having a cathode ray tube. The cathode ray tube includes a screen with red, green and blue phosphors. An electron gun arrangement provided in the color monitor includes a red electron gun, a green electron gun and a blue electron gun. The electron guns are operated simultaneously to scan the screen from, for example, left to right, through a series of rows from the top of the screen to the bottom of the screen.
During the traversal of each row, the electron gun arrangement transmits a series of simultaneous red, green and blue signals to the color phosphors of the screen at a series of horizontally spaced points or locations within the particular row on the screen. Each point or location on the screen that receives one of the series of simultaneous red, green and blue signals represents a point or element of the entire image to be displayed. The color emitted by the color phosphors at any particular point or location on the screen is a function of the relative intensities of the red, green and blue signals transmitted by the electron gun arrangement to that point. As should be understood, red, green and blue are primary colors whereby any other color can be derived from a blending of red, green and blue light depending upon the relative intensity of each primary color light.
In order to process information relating to an image to be displayed in color, it is necessary to store color data for each of the image elements that comprise the total image to be displayed, as for example, the rows of horizontal screen locations impacted by the scanning operation of the electron gun arrangement in a color monitor. Each image element is called a pixel and a storage device must be provided to store the color data for each pixel in an orderly manner so that the pixel data can be retrieved from the storage device and processed to control the operation of the display device, in our example, the electron gun arrangement. A frame buffer is a data storage device typically used in standard display systems to temporarily store digital pixel data for a color image to be displayed on the display device.
Color can be regarded as a three-dimensional value, which means that three values, sometimes referred to as a color triplet, can be used to define a particular color in a unique fashion. The above-described color monitor operates on the basis of color definition provided by the red, green and blue constituents of the color for each pixel. Accordingly, the data for each pixel can comprise a red value, a green value and a blue value.
A "color space" refers to a three-dimensional space used to define, by analogy, the three values required to represent a particular color. For example, in the operation of the electron gun arrangement of the color monitor, each color comprises a red component, a green component and a blue component. This color information can be defined in terms of an RGB (red-green-blue) space with X, Y and Z rectangular coordinates corresponding to the red, green and blue components, respectively. The X, Y and Z coordinates define a volume with any given point within the volume corresponding to a unique color represented by the red, green and blue values of the coordinates of that point.
An RGB space is a convenient color space for use in storing color information because both the electron gun arrangement and color phosphor structure of the screen operate on the basis of red, green and blue constituent signals to provide color. However, present knowledge of human physiology indicates that the human visual system processes color information in accordance with an achromatic and two chromatic dimensions that can be defined in terms of a luminance-chrominance color space. The achromatic dimension of the luminance-chrominance color space is related to the "brightness" of the color and the chromatic dimensions are separated into two so-called "opponent" chrominance dimensions: red versus green and blue versus yellow.
Thus, when color information is stored in accordance with an RGB space definition of color, some processing modifications to the values of the red, green and blue components to, for example, adjust the color image on the monitor screen will usually not result in a high perceptual quality to a human user. Moreover, it has been found that color images are more efficiently compressed and manipulated in a luminance-chrominance space than in a conventional RGB space.
Accordingly, it has been recognized that it would be desirable to store color information in accordance with achromatic and chromatic dimensions and to process the achromatic dimension separately from the chromatic dimension to provide image processing that is efficient and that also more closely coincides with the fundamental color processing mechanisms of human perception. For example, the major television broadcast standards worldwide have adapted a standard linear color space, called a YUV space, for use in processing color signals. Y corresponds to luminance, and is a function of the relative luminosity of each of the color phosphors used in the television screen. The U and V components closely approximate the red/green and blue/yellow opponent chrominance dimensions of the human visual system. More precisely, the U and V components correspond to (red - luminance) and (blue - luminance) values, respectively.
Since each color space can be represented geometrically as a three dimensional space, it is possible to map a color triplet expressed in values defined in one color space to a corresponding color triplet expressed in values defined in another color space through execution of appropriate formulae. The formulae that represent the transformation from one color space to another color space are derived from a geometric relationship between the color spaces when one of the color spaces is viewed as entirely enclosed within the other color space, i.e. a first color space is a subspace of a second color superspace.
For example, the rectangular coordinates of an RGB space for all colors defines a rectangular solid with each axis extending from zero to unity for a respective one of the red, green and blue constituents for the colors within the RGB space. Zero would equate to a minimum value for the red, green or blue, that is no red, green or blue component in a color triplet, as the case may be, and unity would represent a pure hue for the respective red, green or blue component represented by the particular axis.
If the RGB space were viewed as completely enclosed within a three dimensional space defined by, e.g., a YUV space, the RGB space would comprise a parallelepiped relative to the rectangular solid defined by the rectangular Y, U, and V axes due to known relationships between the achromatic and chromatic dimensions of YUV space and the red, blue and green constituents of the RGB space. Accordingly, the YUV space is of larger dimensions than the RGB space to completely enclose the parallelepiped for all colors, as defined by the RGB space.
It has been determined, e.g., that an RGB space completely enclosed by a YUV space would only occupy 23.3% of the volume of the YUV superspace. Any point within the RGB space would also comprise a point within the YUV space because, in this analysis, the RGB space is a subspace of the YUV space. The following matrix formula has been derived to express a YUV color triplet in terms of the corresponding red, green and blue values of a point representing the triplet within the RGB subspace: ##EQU1##
The reverse transformation can be written as the inverse of Equation A.
As should be understood, the above discussed matrix formulae provide a basis for storing and manipulating color triplets in a first color space, e.g., a YUV space, for more efficient and higher quality color processing and, thereafter, transforming or mapping the YUV triplets for the pixels of an image to a second color space, e.g., a corresponding RGB space to provide color triplets that can be effectively used to operate a red, green, blue phosphor monitor, for display of the pixels of the image. However, the transformation process requires nine multiplications per pixel in a YUV to RGB translation and is therefore, highly computationally intensive, particularly when a full color display is desired. A full color display may require 24 bits per pixel for a high quality, full definition of color value. Moreover, the manipulation of YUV color triplets during color processing can project the color triplet values to portions of the YUV space that lie outside the RGB subspace. Thus, these new YUV values define points that are not translatable into RGB values that can be displayed on a color monitor. Consequently, the computations required for manipulation in a first color space and mapping of color values to a second color space for display would also include data processing to effectively project "infeasible" or out-of-range YUV values to points within the RGB subspace that are suitable for display. The above discussion pertains to any translation from a first color space to a second color space. Indeed, in a translation from the CIELUV international standard space to an RGB space, the translation computations are more complex than matrix multiplication as they include, e.g., a cube.
There currently does not exist any general purpose processor than can execute video rate color transformations, much less out-of-range mapping. Moreover, the frame buffers used in the display monitor systems of many computers are of limited size and cannot store sufficient data for each pixel of a color image to display a full color image on the monitor screen.
The prior art has provided methods for displaying an illusion of true color that are generally referred to as dynamic quantization methods. One such dynamic quantization method is called dithering, wherein, during on-line operation, each component of a color triplet input to the standard display monitor system is compared to preselected quantized values for that component and assigned a certain one of the preselected quantized values, as a function of a predetermined relationship between the actual value of the component and the quantized values, so that the assigned quantized value can be used as a representation of the respective actual component for display purposes. Thus, the total number of distinct color triplets available to define each pixel and for storage in the frame buffer of the display monitor system, is reduced to the product between the numbers selected as the quantized values for the respective components of the color triplet.
For example, in an RGB space, a designer can select four distinct quantized red values, four distinct quantized green values and four distinct quantized blue values for a total number of 64 distinct color triplets (4.times.4.times.4). Each red, green and blue value for each pixel to be displayed is processed to assign a representative corresponding red, green and blue value from among the preselected four quantized values for each respective RGB component, so that an illusion of full color display is achieved by relying upon the 64 preselected specific colors.
Accordingly, in this example, a six bit binary number (2.sup.6 =64) can be used to uniquely identify each one of the 64 quantized color triplets and a relatively small capacity frame buffer would be sufficient to store the dithered digital RGB data for each pixel.
In such known dithering systems, the six bit number stored in the frame buffer for each pixel would be used as an index to a look-up table in the display monitor system that contains a full twenty four bit representation of the color corresponding to each particular six bit index number. The twenty four bit representation of the color triplet is then used to display the pixel on the monitor. The storage space required for the twenty four bit representation is not prohibitive because of the limited total number, in our example 64, of color triplets used for display purposes. On the other hand, a full color display would require the storage of a twenty four bit number for each pixel, as discussed above, requiring a relatively large storage capacity for the frame buffer that can be cost prohibitive in certain desk top computer environments.
However, the dithering method, as well as other known dynamic quantization methods, do not alleviate the on-line computational processing required when the color triplets input to the display system are in a first color space, such as a YUV space, and must be translated to a second color space, such as an RGB space, for control of the monitor.